﻿namespace Brjnk.GpxExplorer.ViewModel
{
    using System;
    using Brjnk.Common;

    public interface ITrackPoint
    {
        TrackPointAttributeValue<DateTime> Time { get; }

        TrackPointAttributeValue<Distance> Elevation { get; }

        TrackPointAttributeValue<Distance> Distance { get; }

        TrackPointAttributeValue<Distance> DistanceJoined { get; }

        TrackPointAttributeValue<Distance> DistanceDeltaJoined { get; set; }

        TrackPointAttributeValue<Speed> VerticalSpeedJoined { get; set; }

        TrackPointAttributeValue<Speed> SpeedJoined { get; set; }

        TrackPointAttributeValue<Slope> SlopeJoined { get; set; }

        TrackPointAttributeValue<TimeSpan> Duration { get; }

        TrackPointAttributeValue<TimeSpan> DurationJoined { get; }

        TrackPointAttributeValue<TimeSpan> DurationDeltaJoined { get; set; }

        TrackPointAttributeValue<Acceleration> AccelerationJoined { get; set; }

        TrackPointAttributeValue<Distance> Rised { get; }

        TrackPointAttributeValue<Distance> Fallen { get; }

        TrackPointAttributeValue<Distance> RisedJoined { get; }

        TrackPointAttributeValue<Distance> FallenJoined { get; }

        bool HasDurationDelta { set; }

        bool HasSlope { set; }

        bool HasSpeed { set; }

        bool HasAcceleration { set; }

        bool HasVerticalSpeed { set; }
    }
}